import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


class Request {
    public String username;
    public String password;
}

class Response {
    public boolean ok;
}

@WebServlet("/json")
public class JsonParameterServlet extends HelloServlet{
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 此处约定请求格式如下:
        // POST /json
        // Content-Type: application/json
        //
        // {
        //    username: "zhangsan",
        //    password: "123"
        // }

        // 首先由于传过来的数据是json 格式，所以需要解析成 java对象格式

        ObjectMapper mapper=new ObjectMapper();
        // 这个方法就是 将 req 请求中的数据 先读取，在 存入 Request 中
        Request request=mapper.readValue(req.getInputStream(),Request.class);

        System.out.println("username : "+ request.username);
        System.out.println("password : "+ request.password);


        // 此处也约定响应的格式(也按照 json 来组织):
        // {
        //     ok: true
        // }

        Response response=new Response();
        response.ok=true;

        // 将响应对象转化成 json 的字符串
        String resqJson=mapper.writeValueAsString(response);
        resp.setContentType("application/json; charset=utf8");
        resp.getWriter().write(resqJson);
    }
}
